Skip to content

Conversation

@ChrsMark
Copy link
Member

@ChrsMark ChrsMark commented Feb 11, 2026

Description

This PR adds a workflow that reports code-owners' activity. The workflow only focuses on components that are listed for stability at #44130 since that's the main priority for now. We can expand the report for all components in contrib but that might be a bit noisy.

Link to tracking issue

Related to open-telemetry/opentelemetry-collector#14107

Testing

Running locally with:

export DRY_RUN=1
export GITHUB_TOKEN=ghp_foobarzet
node -e "
const { Octokit } = require('@octokit/rest');
const script = require('./.github/workflows/scripts/generate-codeowners-activity.js');
const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });
script({
  github: { rest: octokit },
  context: { payload: { repository: { owner: { login: 'open-telemetry' } } } }
});
"

Documentation

~

AI Usage disclaimer

The script of this PR is crafted mainly by using Cursor taking inspiration from the Weekly Report workflow script: /.github/workflows/scripts/generate-weekly-report.js

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

<!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. -->
#### Link to tracking issue
Fixes

<!--Describe what testing was performed and which tests were added.-->
#### Testing

<!--Describe the documentation added.-->
#### Documentation

<!--Please delete paragraphs that you did not use before submitting.-->

---------

Signed-off-by: ChrsMark <[email protected]>
Signed-off-by: ChrsMark <[email protected]>
@ChrsMark
Copy link
Member Author

ChrsMark commented Feb 11, 2026

Sample output from the dry run:

Code owner activity report

Period: 2026-01-12 – 2026-02-11

Each code owner (individuals only) must have reviewed or replied to at least 80% of the PRs and issues where they were the code owner for the component.

Components in scope: processor/filter, processor/k8sattributes, processor/resourcedetection, processor/transform, receiver/filelog, receiver/hostmetrics, receiver/prometheus (and processor/resourcedetection/* sub-labels).

PRs
Code owner Component Total Responded % Meets 80%?
andrzej-stencel receiver/filelog 5 2 40% No
Aneurysm9 processor/resourcedetection 49 0 0% No
Aneurysm9 processor/resourcedetection/internal/akamai 1 0 0% No
Aneurysm9 processor/resourcedetection/internal/azure 2 0 0% No
Aneurysm9 processor/resourcedetection/internal/hetzner 1 0 0% No
Aneurysm9 processor/resourcedetection/internal/scaleway 1 0 0% No
Aneurysm9 processor/resourcedetection/internal/vultr 1 0 0% No
Aneurysm9 receiver/prometheus 15 0 0% No
ArthurSens receiver/prometheus 13 4 31% No
bogdandrutu processor/filter 7 0 0% No
bogdandrutu processor/transform 5 0 0% No
braydonk receiver/hostmetrics 3 0 0% No
ChrsMark processor/k8sattributes 20 16 80% Yes
dashpole processor/resourcedetection 61 26 43% No
dashpole processor/resourcedetection/internal/akamai 2 1 50% No
dashpole processor/resourcedetection/internal/alibaba/ecs 2 0 0% No
dashpole processor/resourcedetection/internal/azure 4 1 25% No
dashpole processor/resourcedetection/internal/digitalocean 3 0 0% No
dashpole processor/resourcedetection/internal/hetzner 2 0 0% No
dashpole processor/resourcedetection/internal/oraclecloud 4 0 0% No
dashpole processor/resourcedetection/internal/scaleway 3 0 0% No
dashpole processor/resourcedetection/internal/upcloud 3 0 0% No
dashpole processor/resourcedetection/internal/vultr 2 0 0% No
dashpole receiver/prometheus 17 5 29% No
dmitryax processor/k8sattributes 25 2 8% No
dmitryax receiver/hostmetrics 4 2 50% No
edmocosta processor/filter 6 1 17% No
edmocosta processor/transform 5 2 40% No
evan-bradley processor/filter 7 2 29% No
evan-bradley processor/transform 5 1 20% No
fatsheep9146 processor/k8sattributes 25 0 0% No
krajorama receiver/prometheus 15 3 20% No
odubajDT processor/k8sattributes 11 6 55% No
rogercoll receiver/hostmetrics 2 1 50% No
TylerHelmuth processor/filter 7 0 0% No
TylerHelmuth processor/k8sattributes 25 0 0% No
TylerHelmuth processor/transform 5 0 0% No
PRs below threshold
Code owner Component Total Responded % Meets 80%?
andrzej-stencel receiver/filelog 5 2 40% No
Aneurysm9 processor/resourcedetection 49 0 0% No
Aneurysm9 processor/resourcedetection/internal/akamai 1 0 0% No
Aneurysm9 processor/resourcedetection/internal/azure 2 0 0% No
Aneurysm9 processor/resourcedetection/internal/hetzner 1 0 0% No
Aneurysm9 processor/resourcedetection/internal/scaleway 1 0 0% No
Aneurysm9 processor/resourcedetection/internal/vultr 1 0 0% No
Aneurysm9 receiver/prometheus 15 0 0% No
ArthurSens receiver/prometheus 13 4 31% No
bogdandrutu processor/filter 7 0 0% No
bogdandrutu processor/transform 5 0 0% No
braydonk receiver/hostmetrics 3 0 0% No
dashpole processor/resourcedetection 61 26 43% No
dashpole processor/resourcedetection/internal/akamai 2 1 50% No
dashpole processor/resourcedetection/internal/alibaba/ecs 2 0 0% No
dashpole processor/resourcedetection/internal/azure 4 1 25% No
dashpole processor/resourcedetection/internal/digitalocean 3 0 0% No
dashpole processor/resourcedetection/internal/hetzner 2 0 0% No
dashpole processor/resourcedetection/internal/oraclecloud 4 0 0% No
dashpole processor/resourcedetection/internal/scaleway 3 0 0% No
dashpole processor/resourcedetection/internal/upcloud 3 0 0% No
dashpole processor/resourcedetection/internal/vultr 2 0 0% No
dashpole receiver/prometheus 17 5 29% No
dmitryax processor/k8sattributes 25 2 8% No
dmitryax receiver/hostmetrics 4 2 50% No
edmocosta processor/filter 6 1 17% No
edmocosta processor/transform 5 2 40% No
evan-bradley processor/filter 7 2 29% No
evan-bradley processor/transform 5 1 20% No
fatsheep9146 processor/k8sattributes 25 0 0% No
krajorama receiver/prometheus 15 3 20% No
odubajDT processor/k8sattributes 11 6 55% No
rogercoll receiver/hostmetrics 2 1 50% No
TylerHelmuth processor/filter 7 0 0% No
TylerHelmuth processor/k8sattributes 25 0 0% No
TylerHelmuth processor/transform 5 0 0% No

@ChrsMark
Copy link
Member Author

@mx-psi here is an attempt to count reviews per codeowner of the specific components that are targeting stability. I suggest that we focus on those only for now so as to avoid extra noise by checking the vast list of Contrib's components :).

I wonder if 80% target is quite high though specially when we timeframe in a monthly period. Happy to tune the targets/checks accordingly.

Also I only have the report for PRs but we can expand to report issues' stats as well if we find this useful either now or enable it on a later iteration.

@paulojmdias
Copy link
Member

Should the report measure the PRs created by the codeowner itself ? Looking into my values, most of the PRs was created by me and I cannot review it 😅

@ChrsMark
Copy link
Member Author

Should the report measure the PRs created by the codeowner itself ? Looking into my values, most of the PRs was created by me and I cannot review it 😅

Yeap, that's correct :) . I updated the logic and sample output: fb9e0e1#diff-3005a22a150a86354b703948d26e08bbf1654ac09b994e6ae7124114580740b3R255

@ChrsMark
Copy link
Member Author

ChrsMark commented Feb 12, 2026

Updated output sample:

Code owner activity report

Period: 2026-01-13 – 2026-02-12

Each code owner (individuals only) must have reviewed or replied to at least 80% of the PRs and issues where they were the code owner for the component.

Components in scope: processor/filter, processor/k8sattributes, processor/resourcedetection, processor/transform, receiver/filelog, receiver/hostmetrics, receiver/prometheus (and processor/resourcedetection/* sub-labels).

PRs
Code owner Component Total Responded % Meets 80%?
bogdandrutu processor/filter 7 0 0% No
edmocosta processor/filter 6 1 17% No
evan-bradley processor/filter 7 2 29% No
TylerHelmuth processor/filter 7 0 0% No
ChrsMark processor/k8sattributes 17 12 71% No
dmitryax processor/k8sattributes 22 2 9% No
fatsheep9146 processor/k8sattributes 22 0 0% No
odubajDT processor/k8sattributes 11 6 55% No
TylerHelmuth processor/k8sattributes 22 0 0% No
Aneurysm9 processor/resourcedetection 48 0 0% No
dashpole processor/resourcedetection 61 25 41% No
Aneurysm9 processor/resourcedetection/internal/akamai 1 0 0% No
dashpole processor/resourcedetection/internal/akamai 2 1 50% No
dashpole processor/resourcedetection/internal/alibaba/ecs 2 0 0% No
Aneurysm9 processor/resourcedetection/internal/azure 2 0 0% No
dashpole processor/resourcedetection/internal/azure 4 1 25% No
dashpole processor/resourcedetection/internal/digitalocean 3 0 0% No
Aneurysm9 processor/resourcedetection/internal/hetzner 1 0 0% No
dashpole processor/resourcedetection/internal/hetzner 2 0 0% No
dashpole processor/resourcedetection/internal/oraclecloud 4 0 0% No
Aneurysm9 processor/resourcedetection/internal/scaleway 1 0 0% No
dashpole processor/resourcedetection/internal/scaleway 3 0 0% No
dashpole processor/resourcedetection/internal/upcloud 3 0 0% No
Aneurysm9 processor/resourcedetection/internal/vultr 1 0 0% No
dashpole processor/resourcedetection/internal/vultr 2 0 0% No
bogdandrutu processor/transform 6 0 0% No
edmocosta processor/transform 6 3 50% No
evan-bradley processor/transform 6 1 17% No
TylerHelmuth processor/transform 6 0 0% No
andrzej-stencel receiver/filelog 5 2 40% No
braydonk receiver/hostmetrics 4 0 0% No
dmitryax receiver/hostmetrics 5 2 40% No
rogercoll receiver/hostmetrics 3 2 67% No
Aneurysm9 receiver/prometheus 15 0 0% No
ArthurSens receiver/prometheus 13 3 23% No
dashpole receiver/prometheus 17 4 24% No
krajorama receiver/prometheus 15 3 20% No
PRs below threshold
Code owner Component Total Responded % Meets 80%?
bogdandrutu processor/filter 7 0 0% No
edmocosta processor/filter 6 1 17% No
evan-bradley processor/filter 7 2 29% No
TylerHelmuth processor/filter 7 0 0% No
ChrsMark processor/k8sattributes 17 12 71% No
dmitryax processor/k8sattributes 22 2 9% No
fatsheep9146 processor/k8sattributes 22 0 0% No
odubajDT processor/k8sattributes 11 6 55% No
TylerHelmuth processor/k8sattributes 22 0 0% No
Aneurysm9 processor/resourcedetection 48 0 0% No
dashpole processor/resourcedetection 61 25 41% No
Aneurysm9 processor/resourcedetection/internal/akamai 1 0 0% No
dashpole processor/resourcedetection/internal/akamai 2 1 50% No
dashpole processor/resourcedetection/internal/alibaba/ecs 2 0 0% No
Aneurysm9 processor/resourcedetection/internal/azure 2 0 0% No
dashpole processor/resourcedetection/internal/azure 4 1 25% No
dashpole processor/resourcedetection/internal/digitalocean 3 0 0% No
Aneurysm9 processor/resourcedetection/internal/hetzner 1 0 0% No
dashpole processor/resourcedetection/internal/hetzner 2 0 0% No
dashpole processor/resourcedetection/internal/oraclecloud 4 0 0% No
Aneurysm9 processor/resourcedetection/internal/scaleway 1 0 0% No
dashpole processor/resourcedetection/internal/scaleway 3 0 0% No
dashpole processor/resourcedetection/internal/upcloud 3 0 0% No
Aneurysm9 processor/resourcedetection/internal/vultr 1 0 0% No
dashpole processor/resourcedetection/internal/vultr 2 0 0% No
bogdandrutu processor/transform 6 0 0% No
edmocosta processor/transform 6 3 50% No
evan-bradley processor/transform 6 1 17% No
TylerHelmuth processor/transform 6 0 0% No
andrzej-stencel receiver/filelog 5 2 40% No
braydonk receiver/hostmetrics 4 0 0% No
dmitryax receiver/hostmetrics 5 2 40% No
rogercoll receiver/hostmetrics 3 2 67% No
Aneurysm9 receiver/prometheus 15 0 0% No
ArthurSens receiver/prometheus 13 3 23% No
dashpole receiver/prometheus 17 4 24% No
krajorama receiver/prometheus 15 3 20% No

@mx-psi
Copy link
Member

mx-psi commented Feb 12, 2026

@mx-psi here is an attempt to count reviews per codeowner of the specific components that are targeting stability.

Thanks for working on this!

I suggest that we focus on those only for now so as to avoid extra noise by checking the vast list of Contrib's components :).

Yeah that makes sense to me

I wonder if 80% target is quite high though specially when we timeframe in a monthly period. Happy to tune the targets/checks accordingly.

I agree it is quite high, we can start with something lower (maybe to start smaller we could do 50%). Also, the target was meant to be per component and not specifically per codeowner. We could lower the percentage do something like target%/num_of_codeowners (so, e.g., if we go with 50% and there are two codeowners, we check if each has replied to at least 25% of issues?)

Also I only have the report for PRs but we can expand to report issues' stats as well if we find this useful either now or enable it on a later iteration.

Let's start with PRs for now to keep this small and add issues later?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants